Patch from ChiDeok Hwang to fix memleaks found by Evan Martin.
authorOwen Taylor <otaylor@redhat.com>
Sat, 18 Nov 2000 16:48:39 +0000 (16:48 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Sat, 18 Nov 2000 16:48:39 +0000 (16:48 +0000)
Sat Nov 18 11:45:09 2000  Owen Taylor  <otaylor@redhat.com>

* gtk/gtkcalendar.c: Patch from ChiDeok Hwang to fix
memleaks found by Evan Martin.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkcalendar.c

index a8bf020fb9643bcb8d6db0716b26ddc96ee63810..f6f1a299a8738582a74ae2e4bcf1dae1cd454d27 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sat Nov 18 11:45:09 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c: Patch from ChiDeok Hwang to fix
+       memleaks found by Evan Martin.
+
 Fri Nov 17 20:14:20 2000  Owen Taylor  <otaylor@redhat.com>
 
         * Released 1.3.2
index a8bf020fb9643bcb8d6db0716b26ddc96ee63810..f6f1a299a8738582a74ae2e4bcf1dae1cd454d27 100644 (file)
@@ -1,3 +1,8 @@
+Sat Nov 18 11:45:09 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c: Patch from ChiDeok Hwang to fix
+       memleaks found by Evan Martin.
+
 Fri Nov 17 20:14:20 2000  Owen Taylor  <otaylor@redhat.com>
 
         * Released 1.3.2
index a8bf020fb9643bcb8d6db0716b26ddc96ee63810..f6f1a299a8738582a74ae2e4bcf1dae1cd454d27 100644 (file)
@@ -1,3 +1,8 @@
+Sat Nov 18 11:45:09 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c: Patch from ChiDeok Hwang to fix
+       memleaks found by Evan Martin.
+
 Fri Nov 17 20:14:20 2000  Owen Taylor  <otaylor@redhat.com>
 
         * Released 1.3.2
index a8bf020fb9643bcb8d6db0716b26ddc96ee63810..f6f1a299a8738582a74ae2e4bcf1dae1cd454d27 100644 (file)
@@ -1,3 +1,8 @@
+Sat Nov 18 11:45:09 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c: Patch from ChiDeok Hwang to fix
+       memleaks found by Evan Martin.
+
 Fri Nov 17 20:14:20 2000  Owen Taylor  <otaylor@redhat.com>
 
         * Released 1.3.2
index a8bf020fb9643bcb8d6db0716b26ddc96ee63810..f6f1a299a8738582a74ae2e4bcf1dae1cd454d27 100644 (file)
@@ -1,3 +1,8 @@
+Sat Nov 18 11:45:09 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c: Patch from ChiDeok Hwang to fix
+       memleaks found by Evan Martin.
+
 Fri Nov 17 20:14:20 2000  Owen Taylor  <otaylor@redhat.com>
 
         * Released 1.3.2
index a8bf020fb9643bcb8d6db0716b26ddc96ee63810..f6f1a299a8738582a74ae2e4bcf1dae1cd454d27 100644 (file)
@@ -1,3 +1,8 @@
+Sat Nov 18 11:45:09 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c: Patch from ChiDeok Hwang to fix
+       memleaks found by Evan Martin.
+
 Fri Nov 17 20:14:20 2000  Owen Taylor  <otaylor@redhat.com>
 
         * Released 1.3.2
index a8bf020fb9643bcb8d6db0716b26ddc96ee63810..f6f1a299a8738582a74ae2e4bcf1dae1cd454d27 100644 (file)
@@ -1,3 +1,8 @@
+Sat Nov 18 11:45:09 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcalendar.c: Patch from ChiDeok Hwang to fix
+       memleaks found by Evan Martin.
+
 Fri Nov 17 20:14:20 2000  Owen Taylor  <otaylor@redhat.com>
 
         * Released 1.3.2
index 540361123501571009fe5ef1fa0b6c1993679087..0a5b283ea81a3cf03deea346e052b2406bfef80e 100644 (file)
@@ -262,6 +262,7 @@ typedef void (*GtkCalendarSignalDate) (GtkObject *object, guint arg1, guint arg2
 
 static void gtk_calendar_class_init    (GtkCalendarClass *class);
 static void gtk_calendar_init          (GtkCalendar *calendar);
+static void gtk_calendar_destroy       (GtkObject *calendar);
 static void gtk_calendar_realize       (GtkWidget *widget);
 static void gtk_calendar_unrealize     (GtkWidget *widget);
 static void gtk_calendar_draw_focus    (GtkWidget *widget);
@@ -370,6 +371,7 @@ gtk_calendar_class_init (GtkCalendarClass *class)
   widget_class->focus_out_event = gtk_calendar_focus_out;
   widget_class->style_set = gtk_calendar_style_set;
   widget_class->state_changed = gtk_calendar_state_changed;
+  object_class->destroy = gtk_calendar_destroy;
   
   gtk_calendar_signals[MONTH_CHANGED_SIGNAL] =
     gtk_signal_new ("month_changed",
@@ -1147,6 +1149,16 @@ gtk_calendar_unrealize (GtkWidget *widget)
       gdk_window_destroy (private_data->main_win);
       private_data->main_win = NULL;      
     }
+  if (private_data->day_name_win)
+    {
+      gdk_window_set_user_data (private_data->day_name_win, NULL);
+      gdk_window_destroy (private_data->day_name_win);
+      private_data->day_name_win = NULL;      
+    }
+  if (calendar->xor_gc)
+    gdk_gc_unref (calendar->xor_gc);
+  if (calendar->gc)
+    gdk_gc_unref (calendar->gc);
   
   if (GTK_WIDGET_CLASS (parent_class)->unrealize)
     (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget);
@@ -2646,6 +2658,16 @@ gtk_calendar_focus_in (GtkWidget  *widget,
   return FALSE;
 }
 
+static void
+gtk_calendar_destroy (GtkObject *object)
+{
+  GtkCalendarPrivateData *private_data;
+  private_data = GTK_CALENDAR_PRIVATE_DATA (object);
+  g_free (private_data);
+  if (GTK_OBJECT_CLASS (parent_class)->destroy)
+    (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+}
+
 static gint
 gtk_calendar_focus_out (GtkWidget        *widget,
                        GdkEventFocus     *event)